//
// Created by sjjmw on 3/24/2022.
//
#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"

//int weishu(int cj){
//    int cnt=0;
//    while (cj){
//        cj/=10;
//        cnt++;
//    }
//    return cnt;
//}
int main(){
    int a,b,c;
//    std::unordered_map<int,char> zhongjiang;
//std::vector<int> buf(7);
    while(
            std::cin>>a>>b
    ){
        if(a==6&&b==1){
            printf("0");
            return 0;
        }
        int64_t yu=pow(10,b+1);

        int64_t cj=1;
        for(int i=2;i<=a;i++){
            cj*=(i%yu);
            cj%=yu;
        }
        std::string s;
        while (cj){
            s.push_back(cj%10+'0');
            cj/=10;
        }
//        std::cout<<s<<std::endl;
        for(int i=b;i>0;i--){
            if(s.size()<i){
                printf("0");
            }else{
                printf("%c",s[i-1]);
            }
        }
        printf("\n");
//        std::cout<<std::setw(b)<<std::setfill('0')<<cj;
    }
    return 0;
}